home *** CD-ROM | disk | FTP | other *** search
/ Cre@te Online 2000 December / Cre@teOnline CD05.iso / MacSoft / XML ConsoleMax.sea / XML ConsoleMax / Required / esc.jar / com / extensibility / validation / LeafValidator.class (.txt) < prev    next >
Encoding:
Java Class File  |  2000-06-30  |  5.3 KB  |  139 lines

  1. package com.extensibility.validation;
  2.  
  3. import com.extensibility.util.Debug;
  4. import com.extensibility.xml.DataTypeDeclaration;
  5. import com.extensibility.xml.SchemaIntf;
  6. import com.extensibility.xml.dt.DataType;
  7. import com.extensibility.xml.dt.DataTypeIntf;
  8. import java.util.Hashtable;
  9. import org.w3c.dom.Node;
  10.  
  11. class LeafValidator {
  12.    protected static LeafValidator soloFactory;
  13.    protected Hashtable leafValidatorMap = new Hashtable();
  14.  
  15.    protected LeafValidator() {
  16.       Debug.assert(soloFactory == null);
  17.       this.leafValidatorMap.put(DataTypeIntf.ID, new IDLeafValidator());
  18.       this.leafValidatorMap.put(DataTypeIntf.IDREF, new IDLeafValidator());
  19.       this.leafValidatorMap.put(DataTypeIntf.IDREFS, new IDListLeafValidator());
  20.       this.leafValidatorMap.put(DataTypeIntf.ENTITY, new NmTokenLeafValidator());
  21.       this.leafValidatorMap.put(DataTypeIntf.ENTITIES, new NmTokenListLeafValidator());
  22.       this.leafValidatorMap.put(DataTypeIntf.NMTOKEN, new NmTokenLeafValidator());
  23.       this.leafValidatorMap.put(DataTypeIntf.NMTOKENS, new NmTokenListLeafValidator());
  24.       this.leafValidatorMap.put(DataTypeIntf.ENUMERATION, new NmTokenListLeafValidator());
  25.       this.leafValidatorMap.put(DataTypeIntf.NOTATION, new NcNameLeafValidator());
  26.       this.leafValidatorMap.put(DataTypeIntf.STRING, new StringLeafValidator());
  27.       this.leafValidatorMap.put(DataTypeIntf.NUMBER, new DecimalLeafValidator());
  28.       this.leafValidatorMap.put(DataTypeIntf.INT, new IntegralLeafValidator());
  29.       this.leafValidatorMap.put(DataTypeIntf.DECIMAL, new DecimalLeafValidator());
  30.       this.leafValidatorMap.put(DataTypeIntf.BOOLEAN, new BooleanLeafValidator());
  31.       this.leafValidatorMap.put(DataTypeIntf.DATETIME, new DateTimeLeafValidator());
  32.       this.leafValidatorMap.put(DataTypeIntf.DATETIMETZ, new DateTimeLeafValidator());
  33.       this.leafValidatorMap.put(DataTypeIntf.DATE, new DateTimeLeafValidator());
  34.       this.leafValidatorMap.put(DataTypeIntf.TIME, new DateTimeLeafValidator());
  35.       this.leafValidatorMap.put(DataTypeIntf.TIMETZ, new DateTimeLeafValidator());
  36.       this.leafValidatorMap.put(DataTypeIntf.INTERVAL, new UnimplementedLeafValidator());
  37.       this.leafValidatorMap.put(DataTypeIntf.I1, new IntegralLeafValidator());
  38.       this.leafValidatorMap.put(DataTypeIntf.I2, new IntegralLeafValidator());
  39.       this.leafValidatorMap.put(DataTypeIntf.I4, new IntegralLeafValidator());
  40.       this.leafValidatorMap.put(DataTypeIntf.I8, new IntegralLeafValidator());
  41.       this.leafValidatorMap.put(DataTypeIntf.UI1, new IntegralLeafValidator());
  42.       this.leafValidatorMap.put(DataTypeIntf.UI2, new IntegralLeafValidator());
  43.       this.leafValidatorMap.put(DataTypeIntf.UI4, new IntegralLeafValidator());
  44.       this.leafValidatorMap.put(DataTypeIntf.UI8, new IntegralLeafValidator());
  45.       this.leafValidatorMap.put(DataTypeIntf.R4, new DoubleLeafValidator());
  46.       this.leafValidatorMap.put(DataTypeIntf.R8, new DoubleLeafValidator());
  47.       this.leafValidatorMap.put(DataTypeIntf.FLOAT, new DoubleLeafValidator());
  48.       this.leafValidatorMap.put(DataTypeIntf.FIXED144, new DecimalLeafValidator());
  49.       this.leafValidatorMap.put(DataTypeIntf.UUID, new UnimplementedLeafValidator());
  50.       this.leafValidatorMap.put(DataTypeIntf.URI, new UnimplementedLeafValidator());
  51.       this.leafValidatorMap.put(DataTypeIntf.BINHEX, new UnimplementedLeafValidator());
  52.       this.leafValidatorMap.put(DataTypeIntf.BINBASE64, new UnimplementedLeafValidator());
  53.       this.leafValidatorMap.put(DataTypeIntf.CHAR, new CharLeafValidator());
  54.       this.leafValidatorMap.put(DataTypeIntf.NOTATED, new UnimplementedLeafValidator());
  55.    }
  56.  
  57.    protected static LeafValidator ensureFactory() {
  58.       if (soloFactory == null) {
  59.          soloFactory = new LeafValidator();
  60.       }
  61.  
  62.       return soloFactory;
  63.    }
  64.  
  65.    public static boolean isRootTypeName(String var0) {
  66.       return ensureFactory().leafValidatorMap.containsKey(var0);
  67.    }
  68.  
  69.    public static DataType getParentDataType(SchemaIntf var0, DataType var1) {
  70.       String var2 = var1.getBaseType();
  71.       if (var2.equals("")) {
  72.          var2 = var1.getTypeName();
  73.       }
  74.  
  75.       DataTypeDeclaration var3 = var0.getNamedDataType(var2);
  76.       if (var3 != null) {
  77.          DataType var4 = var3.getDataType();
  78.          return var4 != var1 ? var4 : null;
  79.       } else {
  80.          return null;
  81.       }
  82.    }
  83.  
  84.    public static String getRootTypeName(SchemaIntf var0, DataType var1) {
  85.       String var2 = var1.getTypeName();
  86.       if (isRootTypeName(var2)) {
  87.          return var2;
  88.       } else {
  89.          var2 = var1.getBaseType();
  90.          if (var2.equals("")) {
  91.             var2 = var1.getTypeName();
  92.          }
  93.  
  94.          if (isRootTypeName(var2)) {
  95.             return var2;
  96.          } else {
  97.             DataTypeDeclaration var3 = var0.getNamedDataType(var2);
  98.             if (var3 != null) {
  99.                DataType var4 = var3.getDataType();
  100.                return var4 != var1 ? getRootTypeName(var0, var4) : null;
  101.             } else {
  102.                return null;
  103.             }
  104.          }
  105.       }
  106.    }
  107.  
  108.    public static DataValidator getLeafValidator(SchemaIntf var0, DataType var1) {
  109.       String var2 = getRootTypeName(var0, var1);
  110.       DataValidator var3 = var2 == null ? null : (DataValidator)ensureFactory().leafValidatorMap.get(var2);
  111.       if (var3 == null) {
  112.          var3 = createLeafValidator(var0, var1);
  113.       }
  114.  
  115.       return var3;
  116.    }
  117.  
  118.    public static String getTrimmedNodeValue(Node var0) {
  119.       return var0 != null && var0.getNodeValue() != null ? var0.getNodeValue().trim() : "";
  120.    }
  121.  
  122.    public static DataValidator createLeafValidator(SchemaIntf var0, DataType var1) {
  123.       if (var1.hasEnumeration()) {
  124.          return new EnumerationLeafValidator();
  125.       } else if (var1.isNmTokens()) {
  126.          return new UnimplementedLeafValidator();
  127.       } else if (var1.isNotation()) {
  128.          return new UnimplementedLeafValidator();
  129.       } else {
  130.          return (DataValidator)(var1.isEnumeration() ? new UnimplementedLeafValidator() : new InvalidTypeLeafValidator());
  131.       }
  132.    }
  133.  
  134.    public static String validate(SchemaIntf var0, DataType var1, String var2) {
  135.       DataValidator var3 = getLeafValidator(var0, var1);
  136.       return var3.validate(var0, var1, var2);
  137.    }
  138. }
  139.